package postacie;

import przedmioty.Bron;
import przedmioty.Zbroja;
import wyjatki.BrakBroni;
import wyjatki.BrakZbroi;


public class Zombie extends Postac {
    private int stopienMutacji;
    private Zbroja aktualnaZbroja;
    private Bron aktualnaBron;

    public Zombie(String imie, int liczbaH, int stopienMutacji, Zbroja aktualnaZbroja, Bron aktualnaBron) {
        super(imie, liczbaH);
        this.stopienMutacji = stopienMutacji;
        this.aktualnaZbroja = aktualnaZbroja;
        this.aktualnaBron = aktualnaBron;
    }

    @Override
    public int atak() throws BrakBroni {
        if (aktualnaBron == null)
            throw new BrakBroni("Zombie nie posiada broni!");
        else
            return aktualnaBron.getSilaObrazen() + stopienMutacji;
    }

    @Override
    public boolean obrona(int obrazenia) throws BrakZbroi {
        if (aktualnaZbroja == null)
            throw new BrakZbroi("Zombie nie posiada zbroi!");
        else if (getLiczbaHP() - obrazenia + aktualnaZbroja.getZmniejszanieObrazen() > 0) {
            setLiczbaHP(getLiczbaHP() - obrazenia + aktualnaZbroja.getZmniejszanieObrazen());
            System.out.println("Zombie doznaje obrażenia o wartości " + (obrazenia - aktualnaZbroja.getZmniejszanieObrazen())
                    + " i ma teraz " + getLiczbaHP() + " HP");
            return true;
        } else {
            return false;
        }
    }

    public int getStopienMutacji() {
        return stopienMutacji;
    }

    public Zbroja getAktualnaZbroja() {
        return aktualnaZbroja;
    }

    public Bron getAktualnaBron() {
        return aktualnaBron;
    }

    @Override
    public String toString() {
        return "Zombie{" +
                "stopienMutacji=" + stopienMutacji +
                ", aktualnaZbroja=" + aktualnaZbroja +
                ", aktualnaBron=" + aktualnaBron +
                "} " + super.toString();
    }
}
